package com.book.utils;


import java.text.SimpleDateFormat;
import java.util.Date;

//自定义订单编号规则
public class OrderUtils {

    //订单编号
    private static long orderNum = 0L;
    //日期
    private static String date;

    /**
     * 生成订单编号
     * synchronized:同步代码块，解决线程并发访问数据源造成的数据安全问题
     * 加入在某一分钟内调用两次此方法，那么生成的id如下
     * 2020041515340001
     * 2020041515340002
     * @return
     */
    public static synchronized String createOrderNum(){
        //把当前日期格式化为字符串
        String str = new SimpleDateFormat("yyyyMMddHHmm").format(new Date());

        if(date == null || !date.equals(str)){
            date = str;
            orderNum = 0L;
        }

        orderNum ++;
        long orderNo = Long.parseLong(date) * 10000;
        orderNo += orderNum;

        return String.valueOf(orderNo);
    }
}
